package com.larrylague.template.view
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import org.casalib.display.CasaSprite;
	
	public class AbstractButton extends CasaSprite
	{
		protected var _label:String;
		
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		// CONSTRUCTOR
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function AbstractButton()
		{
			addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		// PRIVATE METHODS
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		
		protected function init(event:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			addEvents();
		}
		
		protected function addEvents():void
		{
			buttonMode = true;
			mouseChildren = false;
			
			addEventListener(MouseEvent.ROLL_OVER, handleOver);
			addEventListener(MouseEvent.ROLL_OUT, handleOut);
			addEventListener(MouseEvent.CLICK, handleClick);
		}
		
		protected function removeEvents():void
		{
			buttonMode = false;
			
			removeEventListener(MouseEvent.ROLL_OVER, handleOver);
			removeEventListener(MouseEvent.ROLL_OUT, handleOut);
			removeEventListener(MouseEvent.CLICK, handleClick);
		}
		
		
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		// EVENT HANDLERS
		///////////////////////////////////////////////////////////////////////////////////////////////////////
		
		protected function handleOver(event:MouseEvent):void
		{
			
		}
		
		protected function handleOut(event:MouseEvent):void
		{
			
		}
		
		protected function handleClick(event:MouseEvent):void
		{
			
		}
	}
}